2015/09/17

Recent entries from same category

  1. Perl6 の無限リストとダイナミックバインディングが最強すぎる
  2. Perl6 の grammar で俺言語「しょぼいスクリプト」を作った。
  3. C言語に Perl6 を埋め込む。
  4. Perl6 の CPAN Author になりました。
  5. Perl6 で俺俺 Gyazo 作った。

Perl6 のパッケージマネージャ Panda を使っていて projects.json が壊れた様な動きをしてて、「あー、Perl6 はまだエコシステムとして完成していないなー」とか思っていたのだけど、どうやら違って Panda が使っている JSON パーサ JSON::Fast の非常にイケてない事が分かった。しかもパンダもパンダで

my $list = try from-json $contents;

try を付けて呼び出してるので JSON::Fast が読み込みに失敗していてもエラーが無視されてしまう。よってモジュール名からリポジトリ名を得られずに Panda が寝たままになってしまう。最悪だ、このパンダ野郎!

イラッとしたので

$ panda install git://github.com/tony-o/perl6-json-faster.git

この様にして JSON::Fast よりも 4093% も速く、そして安定している JSON::Faster を入れ

--- Ecosystem.pm.org    2015-09-17 21:42:09.334540500 +0900
+++ Ecosystem.pm    2015-09-17 22:00:38.246420600 +0900
@@ -1,7 +1,7 @@
 class Panda::Ecosystem {
     use Panda::Project;
     use Panda::Common;
-    use JSON::Fast;
+    use JSON::Faster;
     use Shell::Command;
 
     has $.statefile;
@@ -20,7 +20,7 @@
                 for $fh.lines -> $line {
                     my ($mod, $state, $json) = split ' ', $line, 3;
                     %!states{$mod} = ::("Panda::Project::State::$state");
-                    %!saved-meta{$mod} = from-json $json;
+                    %!saved-meta{$mod} = try from-json $json;
                 }
                 $fh.close;
             }

Panda を弄ってやったらメチャクチャご機嫌になった。起きろパンダ!

Posted at by